A database typically organizes data using primary keys. Generally, a primary key consists of one or more data fields of an object whose values are used to reference the object. Any object needing to reference a first object therefore includes the primary key of the first object. Since primary keys may occupy a significant number of bytes, an amount of memory devoted to primary key storage may quickly become unacceptable.
To illustrate the foregoing, a modern supply chain management system is considered. Such a system may receive an order and determine whether goods are available for delivery as requested by the order. In order to avoid committing the goods to multiple orders received in parallel, the goods are temporarily reserved until the order is stored or canceled. Such a reservation will be referred to as a Temporary Quantity Assignment (TQA).
TQAs of different transactions may be stored persistently in a database container according to a product-location ID associated with a requested good and a transaction ID identifying an associated order. The product-location ID and the transaction ID comprise the primary key of each TQA. To delete all TQAs associated with a given order once the order is stored or canceled, the TQAs are first identified using primary keys associated with the order. Construction of the primary keys may be facilitated by a stored administration structure associating each transaction ID with its associated product-location IDs.
The size of the administration structure may be reduced by referencing each primary key (i.e., each TQA object) using a small object of fixed size, hereinafter referred to as an OID. Accordingly, the administration structure needs only to associate each transaction ID with the OID of each TQA that is associated with the transaction.
Conventional systems are unable to efficiently integrate the above-described dual referencing of objects (i.e., by primary key and by OID) into their object management model. For example, conventional systems lack suitable mechanisms for providing parallel access, modification, and/or “consistent views” of dual-referenced objects.